<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // 闭包：函数嵌套函数，内部函数就是闭包
    // 正常情况下，函数执行完成，内部变量会销毁
    // （销毁：释放内存空间）
    // 闭包，内部函数没有执行完成，外部函数变量不会被销毁
    function outerFun(){
        let a = 10;
        function innerFun(){
            console.log(a); 
        }
        return innerFun;
    }

    let fun = outerFun();
    fun();



    // 作用域全局
    // 作用域链就是一层一层套着来，当前的会向上找，一直找到全局环境
    let a = 10;
    let b = 20;
    function fun(){
        let a = 30;
        let b = 40;
        function fun(){
            let a = 50;
            let d = 60;
        }
    }
    // 就是我最底层要输出b找不到，去上层找，最后找到最上层找不到报undefined
    
</script>
</html>